home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 2
/
Amiga Tools 2.iso
/
tools
/
packer
/
xpkarchive
/
examples
/
xcopy.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-09
|
2KB
|
85 lines
#include <stdlib.h>
#include <stdio.h>
#include <libraries/xpkarchive.h>
struct Library *XpkArchiveBase;
main(int argc,char *argv[])
{
int a;
XarHandle *src,*dst;
LONG Error;
XpkArchiveBase=OpenLibrary("xpkarchive.library",1);
if(!XpkArchiveBase) {
fprintf(stderr,"Cannot open xpkarchive.library\n");
exit(0);
}
if(argc<4) {
fprintf(stderr,"Usage: %s <src_arc> <dst_arc> <file1>::<out1> [<file2>::<out2> ...]\n",argv[0]);
goto fail1;
}
if(!(src=XarOpenArchive(XAR_ArchiveName,argv[1],
XAR_Error,&Error,TAG_DONE))) {
fprintf(stderr,"Cannot open source archive.Error: %ld\n",Error);
goto fail1;
}
if(!(dst=XarOpenArchive(XAR_ArchiveName,argv[2],
XAR_ArchiveMode,XAR_ModeAppend,
XAR_Error,&Error,TAG_DONE))) {
fprintf(stderr,"Cannot open source archive.Error: %ld\n",Error);
goto fail2;
}
for(a=3;a<argc;a++) {
char tmp[100],*p;
int gen=0;
strcpy(tmp,argv[a]);
if(p=rindex(tmp,',')) {
if(sscanf(p+1,"%d",&gen)!=1) {
fprintf(stderr,"Invalid generation\n");
break;
}
*p=0;
gen--;
}
printf("Generation %d of %s\n",gen+1,tmp);
XarCopyFile(XAR_Archive,src,XAR_DestArchive,dst,
XAR_FileName,tmp,XAR_Generation,gen,
XAR_AutoNextGen,0,
XAR_Error,&Error,TAG_DONE);
if(Error>=XARERROR_LEVEL) {
fprintf(stderr,"Fatal Error: %ld\n",Error);
break;
}
}
XarCloseArchive(dst);
fail2:
XarCloseArchive(src);
fail1:
CloseLibrary(XpkArchiveBase);
exit(0);
}